The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, the approaches described in this section may not be prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Messaging is a communication model that is used to handle the complexity of communications between multiple nodes in a distributing environment or a “directed network.” In the context of database management systems (DBMSs), the term “message” may refer to any type of data. For example, a database application may submit a request for data in the form of a query to a database server and the request is stored in a message queue in the DBMS. Messages can be stored persistently, propagated between queues on different machines and database, and transmitted over a network. Publish subscriber and point-to-point communication modes are supported. The database server retrieves the request from the message queue and processes the request against the database. The database server stores results of processing the request in the message queue and the database application retrieves the results from the message queue. In this example, both the request and the results may be stored as messages in the message queue of the DBMS.
In DBMS environments, data contained in message queues, i.e., messages, is sometimes stored in persistent database tables, which provides the benefits of high availability, scalability and reliability. For example, in the event of a failure, a message queue can be recovered using the particular recovery mechanism used in the DBMS to recover database tables. For example, a prior version of a database table and REDO records may be used to construct a later version of the database table. Storing DBMS message queues in persistent database tables has the disadvantage of high overhead associated with maintaining the persistent database tables. For example, recovery mechanisms require the creation and management of UNDO and REDO data for the database tables containing the message queue data. The overhead attributable to maintaining message queue data in database tables can be very expensive in situations where messages are small. Furthermore, the approach generally may not be selectively applied to messages, resulting in the overhead costs being incurred for messages that do not contain important data.
Based on the foregoing, an approach for implementing message queues in database systems that does not suffer from limitations in prior approaches is highly desirable.